package com.osmap.openstreetmap.utils;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.os.Environment;

import com.osmap.openstreetmap.bean.FileBeans;

/**
 * @Comments : TODO(用一句话描述该文件做什么)
 * @author will
 * @CreateDate : 2015年4月2日下午5:25:39
 * @ModifiedBy : will
 * @ModifiedDate: 2015年4月2日下午5:25:39
 * @Modified: TODO(用一句话描述该文件做什么)
 */
public class FileUtils {

	private Context mContext;

	private static FileUtils mInstance;

	public static FileUtils getInstances(Context context) {
		if (mInstance == null) {
			mInstance = new FileUtils(context);
		}
		return mInstance;

	}

	public FileUtils(Context mContext) {
		super();
		this.mContext = mContext;
	}

	public List<FileBeans> list = new ArrayList<FileBeans>();

	/*
	 * searchFile 查找文件并加入到ArrayList 当中去
	 * 
	 * @String keyword 查找的关键词
	 * 
	 * @File filepath 查找的目录
	 */
	public List<FileBeans> searchFile(String keyword, String filepath) {

		FileBeans rowItem;
		// 判断SD卡是否存在
		if (Environment.getExternalStorageState().equals(
				Environment.MEDIA_MOUNTED)) {
			File filePath = new File(filepath);
			File[] files = filePath.listFiles();

			if (files.length > 0) {
				for (File file : files) {
					if (file.isDirectory()) {
						// 如果目录可读就执行（一定要加，不然会挂掉）
						if (file.canRead()) {
							// searchFile(keyword, file); // 如果是目录，递归查找
						}
					} else {
						// 判断是文件，则进行文件名判断
						try {
							if (file.getName().contains("gpx")
									|| file.getName().contains("kmz")
									|| file.getName().contains("kml")
									|| file.getName().contains("plt")) {
								rowItem = new FileBeans();
								rowItem.fileName = file.getName();// 加入名称
								rowItem.path = file.getPath(); // 加入路径
								rowItem.length = file.length(); // 加入文件大小
								list.add(rowItem);
								// Toast.makeText(mContext, "添加文件" +
								// file.getName(),
								// Toast.LENGTH_SHORT).show();
							}
						} catch (Exception e) {
							// Toast.makeText(mContext, "查找发生错误",
							// Toast.LENGTH_SHORT).show();
						}
					}
				}
			}

		}
		return list;
	}

}
